package 二分快速幂.pow;

/**
 * TODO
 *
 * @className: pow3
 * @description: TODO
 * @author: 等什么柠檬君
 * @date: 2022-05-09 16:31
 **/
public class pow3 {
    /**
     * 递归二分快速幂
     * 这里需要注意  可以通过判断 n个数的奇偶来判断结果的正负
     * 偶数个负数为正数
     * 奇数个负数为负数
     * 判断符号后使用二分快速幂得到偶数结果再补足一位奇数位置即可
     * @param args
     */
    public static void main(String[] args) {
//        double x = 2.00000;
////        int n =   -2147483648;
//        int n =   -2;
//        int n =   10;
        double x = 34.00515;
        int n =     -3;
        System.out.println(myPow(x,n));
    }
    public static double myPow(double x, int n) {
        if (n == 0){
            return 1.0;
        }
        if ((n & 1) == 0){
            return myPow(x*x, n/2);
        }else {
            return (n > 0? x : 1.0/x)*myPow(x*x, n/2);
        }
    }
}
